package haizhi.fruitmall.service;

import haizhi.fruitmall.pojo.po.Auth;
import haizhi.fruitmall.pojo.po.Role;
import haizhi.fruitmall.pojo.po.RoleAuth;
import haizhi.fruitmall.pojo.po.User;
import haizhi.fruitmall.pojo.po.UserDetailed;
import haizhi.fruitmall.pojo.po.UserRole;

import java.util.List;
import java.util.Map;
import java.util.Set;

import com.github.pagehelper.PageInfo;

public interface UserService {
	// 添加用户
	public void insertUser(User user);

	// 添加用户详细信息
	public void insertUserDetailed(UserDetailed userDetailed);

	// 为用户添加角色
	public void insertUserRole(UserRole userRole);

	// 根据用户id删除用户
	public void deleteUserById(Integer user_id);

	// 根据用户id删除用户详细信息
	public void deleteUserDetailedById(Integer user_id);

	// 根据用户id删除用户角色
	public void deleteUserRoleById(Integer user_id);

	// 根据用户名删除用户
	public void deleteUserByUserName(String user_name);

	// 修改用户名
	public void updateUser(User user, String user_name);

	// 修改用户手机号码
	public void updateUserTel(UserDetailed userDetailed, String user_name);

	// 根据用户id查询用户信息
	public User findUserById(Integer id);

	// 根据用户名获取用户密码
	public String getPasswordByUserName(String user_name);

	// 根据条件查询用户基本信息
	public List<User> getUserByUserName(String user_name);

	// 分页查询
	public PageInfo getPageInfo(int currentPage, int pageSize);

	// 根据条件获取用户详细信息
	public List<UserDetailed> getUserDetailedByCondition(Map map);

	// 根据用户id返回用户详细信息
	public UserDetailed getUserDetailedByName(String user_name);

	// 根据用户名获得该用户所拥有的所有角色
	public Set<String> getUserRoleSet(String user_name);

	// 根据用户名获得该用户所拥有的所有权限
	public Set<String> getUserAuthSet(String user_name);

	// 根据用户名查询用户id
	public Integer getUserIdByUsername(String user_name);

	// 根据用户id查询该用户所拥有的所有角色id
	public List<UserRole> getUserRoleList(Integer user_id);

	// 根据角色id获得角色
	public Role getRoleById(Integer role_id);

	// 根据角色id查询所有该角色所拥有的角色权限关系
	public List<RoleAuth> getRoleAuthList(Integer role_id);

	// 根据权限id获得权限
	public Auth getAuthById(Integer auth_id);

}
